package com.TCP_UDP网络编程.TCP_Socket_网络编程;

import java.io.*;
import java.net.InetAddress;
import java.net.Socket;

@SuppressWarnings("all")
public class socketTCP03客户端_发送图片 {
    /** 注意  客户端和服务端各有Socket 用于传输*/
    public static void main(String[] args) throws IOException {
        System.out.println("客户端尝试连接~~~~");

        /// 1.连接
        /// 1.连接IP为本地主机的9990端口；跟9990端口形成通道；（如果指定10.113.233.249这种很可能IP地址变了而连接不到）
        Socket socket = new Socket(InetAddress.getLocalHost(),9990);

        /// 2.读取+发送
        /// 文件路径+字节输入流+字节输出流  （读取一行发送一行）
        String filePath = "java-code/src/com/网络编程/TCP_Socket_网络编程/结束标记.png";
        FileInputStream fis = new FileInputStream(filePath);  ///用来读取图片内容的流
        OutputStream ops = socket.getOutputStream();         ///用来将读取到的发送给服务器的流
        byte buff[] = new byte[1024];                       ///存放读取到的内容
        int readLine = 0;                                  ///读取到的长度
        /// 循环 读取+发送
        while((readLine = fis.read(buff)) != -1){
            ops.write(buff,0,readLine);
            ops.flush();   ///每次发送完就刷新
        }
        socket.shutdownOutput();   ///一定要加，给服务器通知发送完毕；

        /// 3.接受服务器回复
        InputStream inputStream = socket.getInputStream();    ///用来接受服务器传过来的内容的输入流
        BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));  ///包装成处理流
        System.out.println(br.readLine());                  ///这里只发送了一行，所以没循环读取；


        /// 4.关闭资源
        br.close();
        fis.close();
        ops.close();
        socket.close();


    }
}
